#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<wait.h>

int main()
{
    pid_t id=fork();
    if(id==0)
    {
        //子进程
        printf("pid:%d,exec command begin\n",getpid());
        sleep(3);
        execl("/usr/bin/ls","ls","-a","-l",NULL);//调用exec*函数执行另一个程序

        printf("pid:%d,exec command end\n",getpid());//该代码不被执行
        //exec*函数调用成功后，该进程中从exec*函数往后的所有代码都不再被执行，因为exec*函数调用成功后，该进程中的所有代码和数据会完全被exec*函数所执行的新程序替换掉，并且exec*函数不再返回。除非exec*函数调用出错时返回-1.

    }
    else 
    {
        //父进程
        pid_t rid=waitpid(-1,NULL,0);//option选项设为0,是阻塞等待
        if(rid>0)
        {
            printf("wait success,rid:%d\n",rid);
        }
    }
    return 0;
}
